﻿using System;
using Microsoft.Xna.Framework.Input;
using System.Collections.Generic;
using System.Linq;

using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;


using Main.src.display;
using Main.src.input;
using Main.src.util;
using Main.src.game;
using Main.src.scene;

namespace Main.src.game
{
    class Bola
    {
        Sprite textura = new Sprite();
        int velocidade = 5, direcaoX = 0, direcaoY = 1, inicioJogo = 0, rotacao = 10;
        Random DirecaoInicial = new Random();
        
        
        public void Start()
        {
            //Iniciar a textura da bola
            textura.Texture = Cache.GetTexture("TBolaFutebol");
            textura.LayerDepth = 0.5f;
            textura.Position.X = (Display.Width / 2) - (textura.Width / 2);
            textura.Position.Y = (Display.Height / 2) - (textura.Height / 2);
            textura.OX = textura.Width / 2;
            textura.OY = textura.Height / 2;
            
        }

        /// <summary>
        /// Atualiza os objetos da cena
        /// </summary>
        public void Update()
        {
            #region Direção Inicial da Bola
            while (inicioJogo == 0)
            {
                if (inicioJogo == 0)
                {
                    inicioJogo = DirecaoInicial.Next(-1, 2);

                    if (inicioJogo == -1)
                    {
                        direcaoX = -1;
                    }
                    else
                    {
                        direcaoX = 1;
                    }
                }
            }
            #endregion

            #region Direção dos Lados da Bola
            Rectangle limite = (Scene.Current as Scene_Game).campo.limiteCampo;               

            if (textura.Position.X - textura.OX <= limite.X) //0)
            {
                direcaoX *= -1;
            }

            if (textura.Position.X - textura.OX + textura.Width >= limite.Width + limite.X)//Display.Width)
            {
                direcaoX *= -1;
            }

            if (textura.Position.Y - textura.OY + textura.Height >= limite.Height + limite.Y) //Display.Height)
            {
                direcaoY *= -1;
            }

            if (textura.Position.Y - textura.OY <= limite.Y) //0)
            {
                direcaoY *= -1;
            }
            #endregion

            textura.Position.X += velocidade * direcaoX;
            textura.Position.Y += velocidade * direcaoY;

            textura.Degrees += rotacao * direcaoX;
            
        }

        /// <summary>
        /// Destrói os objetos da cena
        /// </summary>
        public void Terminate()
        {
        }


    }
}
